Міністерство освіти та науки України
Національний університет “Львівська Політехніка”
Кафедра АСУ
Розрахункова робота №2
з предмету
Об'єктно-орієнтоване програмування
на тему:
Створення проекту із застосуванням наслідування та поліморфізму”
Виконав:
ст. гр. КН-32
Перевірила:
Бунь А.Р.
Львів - 2009
Зміст
Індивідуальне завдання.
Тексти головного файлу проекту, файлів модулів та форм.
Аналіз отриманих результатів та висновки.
Індивідуальне завдання.
Створити проект Delphi для дослідження основних властивостей ООП – наслідування та поліморфізму:
1. Розробити компоненту на основі класу із полями у відповідності до варіанту. Передбачити конструктори (з параметрами та без), деструктор, селектори і модифікатори. Врахувати необхідність приховання даних.
2. Описати дочірні класи. Визначити та реалізувати необхідні поля та методи.
3. У дочірніх класах перевантажити або перевизначити операції (у відповідності до варіанту), які вводяться у батьківському класі як абстрактні методи (для кожного класу – з різною реалізацією).
4. Передбачити застосування поліморфного присвоєння та динамічного зв’язування.
5. Самостійно продумати і реалізувати спосіб демонстрації отриманих результатів.
Примітка. Опис компонент, класів та реалізацію методів виконати в окремих програмних модулях.
Варіант 12.
Клас “коло”: координати центра, радіус, колір, ознака візуалізації (чи показувати на екрані).
Дочірні класи:
“вписаний многокутник” (кількість сторін);
“описаний многокутник” (кількість сторін).
Перевантажити операції: інкременту – збільшення кількості сторін, зміна знаку – зміна ознаки візуалізації, перетворення типу: вписаний – описаний многокутник. Перевизначити метод “малювання”.
Тексти головного файлу проекту, файлів модулів та форм.
//--------- project1.dpr -------------
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
//--------- unit1.pas -------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Circle, StdCtrls;
type
TForm1 = class(TForm)
Circle1: TCircle;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
M:TOmnoh;
Z:TVmnoh;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Circle1:=TCircle.Create(Circle1.x,Circle1.y,Circle1.rad,1011,1);
Circle1.Draw(Canvas);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Circle1.SizeInc;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Circle1.SizeInc(5);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Circle1.SizeDec;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Circle1.SizeDec(5);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Circle1:=TCircle.Create;
Circle1.x:=250;
Circle1.Y:=250;
Circle1.rad:=90;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
//M.n:=strtoint(Edit1.text);
M:=TOmnoh.Create(Circle1.x,Circle1.y,Circle1.rad,Circle1.kol,Circle1.viz);
M.Draw(canvas);
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Z:=TVmnoh. Create(Circle1.x,Circle1.y,Circle1.rad,Circle1.kol,Circle1.viz);
Z.Draw(canvas);
end;
end
unit Circle;
interface
uses
SysUtils, Classes,Controls,Graphics, Windows;
type
TCircle = class(TComponent)
private
{ Private decl...